/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.upn.sigemfi.vfi.beans;

import edu.upn.sigemfi.seg.bc.UsuarioDelegate;

import edu.upn.sigemfi.seg.be.Usuario;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.faces.model.SelectItem;

/**
 *
 * @author Administrador
 */
public class UsuarioController extends AbstractController {

    private UsuarioDelegate delegado;
    private Usuario usuario;
    List<Usuario> lista = new ArrayList<Usuario>();


    public UsuarioController() {
        delegado = new UsuarioDelegate();

    }

    public List<Usuario> getUsuarios() {
        try {
            return delegado.listar();
        } catch (Exception e) {
            error(e.getMessage());
        }
        return null;
    }

    public String nuevo() {
        usuario = new Usuario();
        return "nuevo";
    }



    public SelectItem[] getUsuariosSI() {
        SelectItem[] select = null;
        try {
         //   Iterator<String> iterator;
            List<Usuario> lista = delegado.listar();
            if (lista != null) {
                select = new SelectItem[lista.size()];
                int i = 0;
//                select[i++] = new SelectItem(null, "<<Seleccione una Ventanilla");
                for (Usuario m : lista) {
                    select[i++] = new SelectItem(m, "Usuario " + m.getEmpleado().getApePaternoPersona() + m.getEmpleado().getApeMaternoPersona() + "," + m.getEmpleado().getNombrePersona());
                }
            } else {
                select = new SelectItem[1];
                select[0] = new SelectItem(null, "No existen Usuarios");
            }
        } catch (Exception e) {

            select = new SelectItem[1];
            select[0] = new SelectItem(null, "<<Hubo un error>>" + e.getMessage());
        }
        return select;
    }

    public List<Usuario> autocompletar(Object suggest) throws Exception {
	   String pref = (String) suggest;
       List<Usuario> listaUsuarios = delegado.listar();
		ArrayList<Usuario> result = new ArrayList<Usuario>();
		Iterator<Usuario> iterator = listaUsuarios.iterator();
		while (iterator.hasNext()) {
			Usuario elem = ((Usuario) iterator.next());
			if ((elem != null && elem.getEmpleado().getApePaternoPersona().toLowerCase().indexOf(pref.toLowerCase()) == 0)
					|| "".equals(pref)) {
				result.add(elem);
			}
		}
		return result;

        
	}


    public String registrar() {
        try {
            delegado.crear(usuario);
            info("El usuario se registró correctamente");
        } catch (Exception e) {
            error(e.getMessage());
        }
        return "volver";
    }

    public String actualizar() {
        try {
            delegado.editar(usuario);
            info("El usuario se actualizó correctamente");
        } catch (Exception e) {
            error(e.getMessage());
        }
        return "volver";
    }

    public String eliminar() {
        try {
            delegado.eliminar(usuario);
            info("El usuario se eliminó correctamente");
        } catch (Exception e) {
            error(e.getMessage());
        }
        return "volver";
    }

    public Usuario buscar(Long codigo) {
        try {
            return delegado.buscar(codigo);
        } catch (Exception e) {
            error(e.getMessage());
        }
        return null;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
}
